home *** CD-ROM | disk | FTP | other *** search
/ Aminet 1 (Walnut Creek) / Aminet - June 1993 [Walnut Creek].iso / aminet / util / misc / psychic.lha / psychic.c < prev   
C/C++ Source or Header  |  1992-06-10  |  10KB  |  253 lines

  1. /*****************************************************************************
  2. *    PSYCHIC.C                           Version 1.0
  3. *
  4. *    This program is attuned to the Powers of the Ancients, and the
  5. *    Mysterious Forces which Shape our Destiny. With This Program, You
  6. *    will Be Privy to the same Sources of Knowledge and Mystic Oracles
  7. *    used by Ancient Astronauts.
  8. *
  9. *    Know that this Font of Wisdom will work on BSD Unix Systems Unmodified,
  10. *    but the Ancients have Decreed that you must change "#undef SYSV" to
  11. *    "#define SYSV" in the Line Below if you have the System of Fives.
  12. *
  13. *    When        Who    Why
  14. *    ==============    =======    ==============================================
  15. * v1.0    06/17/87 14:46    BVH    Wrote this comment.
  16. * v1.01 02/25/90 23:15    DJB    Ported to Commodore Amiga.
  17. ******************************************************************************/
  18.  
  19. #include <stdio.h>
  20.  
  21. #ifdef AZTEC_C
  22. #define MAXCOL 77
  23. #else
  24. #define    MAXCOL    78
  25. #endif
  26.  
  27. #undef SYSV
  28.  
  29. #ifdef SYSV
  30. #define    srandom    srand
  31. #define    random    rand
  32. #endif
  33.  
  34. #ifdef AZTEC_C
  35. #define    srandom    sran
  36. #define    random    ran
  37. #endif
  38.  
  39. #undef DRI
  40.  
  41. char *emotion[] = {        /* ~E */
  42.     "Hope","Love","War","Peace","Pestilence","Plague","Lust","Justice",
  43.     "Travel","Cost of Living","Inflation","Oblivion","Television",
  44.     "Choice","Blind Beggars","Ugliness","Beauty","Bad Breath",
  45.     "Country Living","Utter Dullness","Pillow Talk","Evil","Good",
  46.     "Water","Air","Death","Situation Comedies","Supermarket Rags",
  47.     "Rock and Roll","Light","Dark","Knowledge","Anatomy","Psyche",
  48.     "Vengeance","Destruction","Wallpaper","Wisdom","Babysitters",
  49.     "Drinking","Filth","Flat Squirrels on the Highway","Gossip about ~N",
  50.     "Dumb Novelty Programs (like this one)"
  51. };
  52.  
  53. char *whatis[] = {        /* ~W */
  54.     "the Ram","the Bull","the Fish","the Crab","the Centaur","the Virgin",
  55.     "the Scorpion","the Water Bearer","the Twin","the Lion","the Turtle",
  56.     "the Merciless","the Scourge of Heaven","the Patron of ~E",
  57.     "the Guardian of ~E","the Goddess of ~E","the God of ~E",
  58.     "the Horse","the Birdman of Alcatraz","the Source of All ~E",
  59.     "the Jedi Master","the WWF Champion","the Comic Sensation",
  60.     "the ~N Lookalike","the Wise","the Small","the Elder",
  61.     "Scion of the Elder Race","the One with the Power of ~E",
  62.     "the One who Brings ~E","the One Who Fights ~E",
  63.     "the Polka Dotted","the Consort of ~W","the Ruler of ~E",
  64.     "the One who Predicts That ~P","the Sucker of Dust","the Twin Tower",
  65.     "the One and Only","the Speaker for ~E","the Gweat and Powerful",
  66.     "the Psychic","the Elvis Impersonator","the System Administrator",
  67.     "the Earth Mother","~N's Mentor","the Big Baby",
  68.     "the One Who Resembles ~W","the One Who Has Seen ~W From Afar",
  69.     "the Car","the Albatross","the Penguin","the Joker","the Riddler"
  70. };
  71.  
  72. char *whois[] = {        /* ~N */
  73.     "Aries","Cancer","Gemini","Taurus","Scorpio","Leo","Pisces","Libra",
  74.     "Aquarius","Virgo","Emperor Chung","Jean Dixon","The Amazing Kreskin",
  75.     "Soupy Sales","Saturn","Jupiter","Mercury","Chronos","Pluto","Hel",
  76.     "Mars","Venus","Gaia","Uranus","Chthon","Neptune","Zarkov","Flash Gordon",
  77.     "Margaret Thatcher","Ronald Reagan","Howdy Doody","Lot O. Droyd",
  78.     "Obiwan Kenobi","Yoda","Thor","Zeus","Odin","Scooby Doo","Papa Smurf",
  79.     "Yogi Bear","Regina","Renaldi","Elijawon","Jason","Elvis","Oz",
  80.     "Glinda","Manitoba","Penacook","Sitting Bull","Sunny Kirsten",
  81.     "Cheryl","Ray Frank","Ken Arndt","Kral","George ~N Washington",
  82.     "~N ( ~W ) ~N","He-Man","She-Ra","Cinderella","Prince Charming",
  83.     "Godzilla","Gamera","King Kong","She-Mommy","Nostradamus","Einstein",
  84.     "Houdini","My Mother"
  85.  
  86. #ifdef DRI
  87.     ,"~D","~D","~D","~D","~D","~D","~D","~D",
  88.     "~D (aka ~N)"
  89. };
  90.  
  91. char *dri[] = {                /* ~D */
  92.     "Adam Messer","Andrea McDonald","Bill Tyler","Bruce Holloway",
  93.     "Christina Shaw","Curt Geske","Dan Erickson","Dan Riddel-Kaufman",
  94.     "Dick Williams","Frank Holsworth","Gary Kildall","Greg Pachner",
  95.     "Greg Rossi","Gregg Morris","Henri Socha","Jeff Newman","Joe Guzaitas",
  96.     "Karl (Erick) Braun","Ken Belanger","Larry Towner","Lowell Webster",
  97.     "Marilyn Bohl","Mark Alexander","Mike Bailey","Mike Franusich",
  98.     "Mike MacLeod","Nancy Zentner","Peter Bolton","Renate Heisler",
  99.     "Rob Patten","Robert Bruce","Russ Weiser","Stan McKee","Steve Cavender",
  100.     "Stephanie Horoszko","Steve Toner","Tony Harris","Wayne Davison"
  101. #endif
  102.  
  103. };
  104.  
  105. char *predicts[] = {        /* ~P */
  106.     "you have dreamed that ~P. You will have such dreams again",
  107.     "your nose is oddly formed, and your eyes are of different color",
  108.     "you have contracted a fatal illness, but your belief in ~N, ~W, will pull you through",
  109.     "you will donate all your worldy possessions to ~N, ~W. You align yourself correctly for the coming jihad",
  110.     "your phone will ring soon. It will be someone whom you aren't looking at, or ~W. If the latter, leave a message at the tone",
  111.     "you will die before you finish reading this prediction, unless ~N smiles on you. If you DO survive, ~W will require a sacrifice before you learn that ~P",
  112.     "you are not satisfied with life",
  113.     "you often have fits of depression and feelings of uselessness",
  114.     "you harbor a secret desire to become ~W. Hide these feelings",
  115.     "your karma is troubled",
  116.     "the Force is strong in you",
  117.     "your phone is not ringing",
  118.     "you will not die before you finish reading this prediction",
  119.     "you will take a long trip soon",
  120.     "you feel you are not living up to your potential",
  121.     "you are not satisfied with your position",
  122.     "your situation is improving",
  123.     "you have contracted a fatal illness and will die",
  124.     "you will be contacted by aliens within the year. You may not recognize them, though they will give you clear signs",
  125.     "you will buy something from the Home Shopping Network",
  126.     "you will win ~$ dollars with LOTTO-DROID. Make obeisance to ~W",
  127.     "you will change your name three times in the next three years. You will not change it to ~N. Yet, ~W will continue to influence your every move",
  128.     "people say ~P",
  129.     "you must shun ~W at all turns. Be vigilant in this",
  130.     "you must not believe predictions from cheap programs like this one. Look to ~N for clear truth",
  131.     "your terminal is straining your eyes",
  132.     "your hair is changing color. Also, ~P",
  133.     "good fortune awaits you around every corner",
  134.     "it's not what you do, it's how you do it",
  135.     "your good fortune is at an end. Look to ~N, ~W, for guidance",
  136.     "your life has already peaked. You are on a long, downward slide",
  137.     "you have a brilliant future ahead of you. But rest not; ~P",
  138.     "you have an ardent desire to add more predictions to this program. Hold that thought, and ~N, ~W, predicts that ~P",
  139.     "you will be fired for spending so much time playing with a cheap little program like this one"
  140. };
  141.  
  142. char *fullthing[] = {
  143.     "Listen! ~W has seen that ~P! Prove ~N wrong, and instead, ~P.",
  144.     "Logout immediately! I, ~N, ~W, have seen that ~P! However, ~P.",
  145.     "I've heard that ~P. To avoid this fate, buy the seven Books of ~W, and ~N will smile upon you once again, and you will find that ~P.",
  146.     "Heretic! Listen not to the simpleminded aphorisms of ~N! Only ~N, ~W, can help! Heed this, or I predict that ~P!",
  147.     "~N, ~W, has said that ~P.",
  148.     "I have received a psychic message from ~W, who says that ~P. If so, ~N forsees that ~P. This is true. Do not ignore this, or ~N, ~W, will become extremely angry.",
  149.     "Your biorythm is in turmoil. ~N, ~W, has the answers.",
  150.     "Other soothsayers tell untruths. ~N has the answers. Worship ~W, and you will find that ~P.",
  151.     "~N, ~W, knows that ~P. And much more. Send money.",
  152.     "Bathe in the presence of ~N, and know that ~P.",
  153.     "Beware, ~W has said that ~P, but ~P.",
  154.     "\"I predict that ~P\", says ~N, ~W. Listen well, for ~P.",
  155.     "Know that ~P. All this ~N has seen. Remember, ~W is never wrong. As a token of truth, ~P.",
  156.     "Run this program again, and find that ~P.",
  157.     "An urgent message from ~W! Ignore this, and find that ~P. But listen well, and hang a token of ~N, ~W, about your neck, for ~P."
  158. };
  159.  
  160. #define    NUME    ((sizeof emotion)/sizeof(char *))
  161. #define    NUMW    ((sizeof whatis)/sizeof(char *))
  162. #define    NUMN    ((sizeof whois)/sizeof(char *))
  163. #define    NUMP    ((sizeof predicts)/sizeof(char *))
  164. #define    NUMF    ((sizeof fullthing)/sizeof(char *))
  165.  
  166. #ifdef DRI
  167. #define    NUMD    ((sizeof dri)/sizeof(char *))
  168. #endif
  169.  
  170. int col = 0, nump = 3;
  171. char token[256];
  172.  
  173. main(acnt,avar)
  174. int acnt;
  175. char *avar[];
  176. {
  177.     int i, f;
  178.  
  179.     srandom(time(0L));
  180.     if(acnt > 1) nump = atoi(avar[1]);
  181.     for(i=0; i<nump; ++i){
  182.     tokenize(fullthing[rnd(NUMF)]);
  183.     printf("\n\n");
  184.     col = 0;
  185.     }
  186. }
  187.  
  188. int isspace(ch)
  189. int ch;
  190. {
  191.     return(ch == ' ');
  192. }
  193.  
  194. int rnd(n)
  195. int n;
  196. {
  197.     return((random() & 0x7FFF) % n);
  198. }
  199.  
  200. tokenize(s)
  201. char *s;
  202. {
  203.     char tmptok[256];
  204.     char *s1;
  205.     int l;
  206.  
  207. for(;;){
  208.  
  209.     while(isspace(*s)) ++s;
  210.     if(!*s) return;
  211.     for(s1=token; *s && !isspace(*s);) *s1++ = *s++;
  212.     *s1++ = ' ';
  213.     *s1 = 0;
  214.     l = (s1-token);
  215.     if(l > 1 && token[0] == '~'){
  216.     switch(token[1]){
  217.         case '$':
  218.         sprintf(tmptok,"$%d%02d.00",rnd(10000),rnd(100));
  219.         break;
  220. #ifdef DRI
  221.         case 'D':
  222.         strcpy(tmptok,dri[rnd(NUMD)]);
  223.         break;
  224. #endif
  225.         case 'E':
  226.         strcpy(tmptok,emotion[rnd(NUME)]);
  227.         break;
  228.         case 'W':
  229.         strcpy(tmptok,whatis[rnd(NUMW)]);
  230.         break;
  231.         case 'N':
  232.         strcpy(tmptok,whois[rnd(NUMN)]);
  233.         break;
  234.         case 'P':
  235.         strcpy(tmptok,predicts[rnd(NUMP)]);
  236.         break;
  237.         default:
  238.         strcpy(tmptok,">>WHOOPS<<");
  239.         break;
  240.         }
  241.     strcat(tmptok,&token[2]);
  242.     tokenize(tmptok);
  243.     continue;
  244.     }
  245.     if((col + l) > MAXCOL){
  246.     printf("\n");
  247.     col = 0;
  248.     }
  249.     printf("%s",token);
  250.     col += l;
  251.     }
  252. }
  253.